#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;

struct item{
	int weight=1,value=1,sum;
};

int main(){
	int n,m;
	cin>>n>>m;
	item a[n];
	for(int i=0;i<n;i++){
		cin>>a[i].sum;
	}
	int dp[n+1][m+1];
	memset(dp,0,sizeof(dp));
	for(int i=0;i<=n;i++){
		dp[i][0] = 1;
	}
//	for(int i=0;i<=n;i++){
//		for(int j=0;j<=m;j++)
//			cout<<dp[i][j]<<" ";
//		cout<<endl;
//	}
//	cout<<endl;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			dp[i][j] += dp[i-1][j];
			for(int k=1;k<=a[i-1].sum;k++){
				if(j-k >= 0)
					dp[i][j] += dp[i-1][j-k];
				else
					break;
				dp[i][j] %= 1000000+7;
			}
		}
	}
//	for(int i=0;i<=n;i++){
//		for(int j=0;j<=m;j++)
//			cout<<dp[i][j]<<" ";
//		cout<<endl;
//	}
	cout<<dp[n][m]%(1000000+7);
	return 0;
}
